package models

import (
	"fmt"
	"time"
)

type SConfig struct {
	Id    int    `xorm:"autoincr"`
	Model string //模块，这个模块是谁用的
	Key   string //KEY
	Value string //值
}

func (t *SConfig) TableName() string {
	return "系统配置"
}

var m_config map[string]string

func GetConfig(模块 string, 名称 string, 默认值 string) string {
	key := 模块 + "##" + 名称
	if value, ok := m_config[key]; ok == true {
		return value
	} else { //如果不存在，就添加到里面

		config := &SConfig{}
		config.Model = 模块
		config.Key = 名称
		config.Value = 默认值
		if _, err := db.Insert(config); err != nil {
			panic(err)
		}
		m_config[key] = 默认值
	}
	return 默认值
}
func SetConfig(模块 string, 名称 string, 值 string) {
	sql := fmt.Sprintf("UPDATE `系统配置` SET `value`='%s' WHERE `model`='%s' AND `key`='%s'", 值, 模块, 名称)
	if _, err := db.Exec(sql); err != nil {
		panic(err)
	}
}
func (rt *RunTime) 发送系统时间() {
	tx := CreateBuff(2 + 4)
	tx.AddInt16(0xBB)
	tx.AddInt32(int32(m_游戏时间))
	rt.AddHeadSend10(0x0A, [][]byte{{}, tx.Buff})
}
func 系统时间服务() {
	原点时间, _ := time.Parse("2006-01-02 15:04:05", "0001-01-01 00:00:00")
	for {
		m_游戏时间++
		m_RunTime.Range(func(key, value interface{}) bool {
			value.(*RunTime).发送系统时间()
			return true
		})
		t := 原点时间.Add(time.Hour * time.Duration(m_游戏时间))

		//domain := fmt.Sprintf("[V时间,<=,'%s']", t.Format("2006-01-02 15:04:05"))
		lsch := &S历史长河{}
		if ok, _ := db.Where("时间<=?", t).OrderBy("时间 desc").Get(lsch); ok == false {
			panic("不可能没有历史长河最开始的时间呀!")
		}
		if m_历史长河 != nil {
			if m_历史长河.Id != lsch.Id {
				m_电信服务 <- &电信{
					来源:   nil,
					类型:   E系统消息,
					通讯内容: lsch.V说明,
				}
			}
		}
		m_历史长河 = lsch
		time.Sleep(time.Minute) //每一分钟相当于1小时
	}
}
